#ifndef PLAYSTATE_H
#define PLAYSTATE_H

#include <ODN_GameState.h>

//TODO: Decide exactly which states will be needed, and what each will need

class CPlayState : public ouden::CGameState
{
public:
		CPlayState();
		virtual ~CPlayState();
		
		//Events called by a game manager
		virtual void enter();
		virtual void exit() = 0;
		virtual void pause() = 0;
		virtual void resume() = 0;
		virtual void keyClicked(short keycode) = 0;
		virtual void keyDown(short keycode) = 0;
		virtual void keyUp(short keycode) = 0;
		virtual void processUnBufInput(CInputDevice* input) = 0;
		virtual bool frameStarted(/*TODO: Time parameter*/ ) = 0;
		virtual bool frameEnded( ) = 0;
		
protected:
private:
	
	void createScene();
	
	Ogre::SceneManager* 	m_pSceneMgr;		//Ogre Scene manager object
	Ogre::Camera* 			m_pCamera;			//Main game camera
	opal::Simulator* 		m_pSimulator;		//Physics simulator
	
	CGameWorld* 			m_pGameWorld;		//Game world object which holds all game entities
	
};

#endif // PLAYSTATE_H
